﻿//#include <windows.h>
//#include <commctrl.h>
//#pragma comment(lib, "comctl32")
//
////过程函数的返回值都是LRESULT,类型都是CALLBACK
//LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
//
//#define ID_DEFAULTPROGRESSCTRL	401
//#define ID_SMOOTHPROGRESSCTRL	402
//#define ID_VERTICALPROGRESSCTRL	403
//
//
////https://docs.microsoft.com/en-us/windows/win32/controls/cookbook-overview
////Enabling Visual Styles
//#pragma comment(linker,"\"/manifestdependency:type='win32' \
//name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
//processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
//
//int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
//{
//	HWND hwnd; //主窗口句柄,在CreateWindow中赋值
//	MSG msg; //消息变量,在GetMessage中使用
//	WNDCLASS wndclass; //窗口类
//	const TCHAR* szAppName = TEXT("ProgressBar"); //类名和窗口名
//	wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //窗口背景
//	wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
//	wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
//	wndclass.lpszClassName = szAppName;
//	wndclass.cbClsExtra = 0;
//	wndclass.cbWndExtra = 0;
//	//在自定义对话框类时必须指定为DLGWINDOWEXTRA的大小
//	wndclass.lpszMenuName = NULL;
//	wndclass.style = CS_HREDRAW | CS_VREDRAW;
//	wndclass.lpfnWndProc = WndProc;
//	wndclass.hInstance = hInstance;
//
//	if (!RegisterClass(&wndclass))
//		return 0;
//	hwnd = CreateWindow(szAppName,
//		szAppName,
//		WS_OVERLAPPEDWINDOW,
//		CW_USEDEFAULT,
//		CW_USEDEFAULT,
//		CW_USEDEFAULT,
//		CW_USEDEFAULT,
//		NULL,
//		NULL,
//		hInstance,
//		NULL);
//	ShowWindow(hwnd, nCmdShow);
//	UpdateWindow(hwnd);
//	while (GetMessage(&msg, NULL, 0, 0))
//	{
//		TranslateMessage(&msg);
//		DispatchMessage(&msg);
//	}
//	return msg.wParam;
//}
//
//DWORD WINAPI PBThreadProc(LPVOID lpParameter)
//{
//	HWND hwndPB = (HWND)lpParameter;
//	PBRANGE range;
//
//	SendMessage(hwndPB, PBM_SETRANGE,
//		(WPARAM)0, (LPARAM)(MAKELPARAM(0, 100)));
//
//	SendMessage(hwndPB, PBM_GETRANGE,
//		(WPARAM)TRUE,
//		(LPARAM)&range);
//
//	while (TRUE)
//	{
//		SendMessage(hwndPB, PBM_DELTAPOS, //设置进度条的新位置为当前位置加上范围的1/20
//			(WPARAM)((range.iHigh - range.iLow) / 20), (LPARAM)0);
//		if (SendMessage(hwndPB, PBM_GETPOS, (WPARAM)0, (LPARAM)0) //取得进度条当前位置
//			== range.iHigh)
//		{
//			SendMessage(hwndPB, PBM_SETPOS, (WPARAM)range.iLow, (LPARAM)0); //将进度条复位
//		}
//		Sleep(1000);
//	}
//}
//
//
//LRESULT WINAPI WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
//{
//	static HWND hwndPB;
//	switch (message)
//	{
//	case WM_CREATE:
//	{
//		InitCommonControls(); //确保已注册了进度条类PROGRESS_CLASS
//		hwndPB = CreateWindowEx(
//			0,
//			PROGRESS_CLASS,
//			NULL,
//			WS_CHILD | WS_VISIBLE,
//			0, 0, 0, 0,//位置和大小在WM_SIZE中设置
//			hwnd,
//			(HMENU)0,
//			((LPCREATESTRUCT)lParam)->hInstance,
//			NULL);
//
//		CreateThread(//操作进度条的线程
//			NULL,
//			0,
//			(LPTHREAD_START_ROUTINE)PBThreadProc,
//			hwndPB,
//			0,
//			0
//		);
//		return 0;
//	}
//	case WM_SIZE:
//	{
//		RECT rc;
//		GetClientRect(hwnd, &rc);
//		MoveWindow(
//			hwndPB,
//			rc.left,
//			(rc.bottom - rc.top) / 4,
//			rc.right - rc.left,
//			(rc.bottom - rc.top) / 10,
//			TRUE
//		);
//		return 0;
//	}
//	case WM_DESTROY:
//		PostQuitMessage(0);
//		return 0;
//	}
//	return DefWindowProc(hwnd, message, wParam, lParam);
//}